#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""

@Time   :2025/8/5 上午9:10
@Author :zengjiahao1989@gmail.com
@File   :prompt.py
"""

from datetime import datetime

from langchain_core.messages import AIMessage
from langchain_core.prompts import (
    PromptTemplate,
    ChatPromptTemplate,
    HumanMessagePromptTemplate,
    MessagesPlaceholder
)

prompt = PromptTemplate.from_template("请讲一个关于{subject}的成长之路")
print(prompt.format(subject="程序员"))
prompt_value = prompt.invoke({"subject": "程序员"})
print(prompt_value.to_string())
print(prompt_value.to_messages())

chat_prompt = ChatPromptTemplate.from_messages(
    [
        # 使用元组或者使用类都可以
        ("system", "你是一个OpenAi开发的聊天机器人，请根据用户的提问进行回复，当前的时间为：{now}"),
        # 有可能有其他消息,使用消息占位符
        MessagesPlaceholder("chat_history"),
        HumanMessagePromptTemplate.from_template("请讲一个关于{subject}的冷笑话")
    ]
).partial(now=datetime.now())
# partial这个函数能把模版的某个值先赋值了，返回的仍然是模版
chat_prompt_value = chat_prompt.invoke({
    # "now": datetime.now(),
    "chat_history": [
        ("human", "我是增肌好"),
        AIMessage("你好，我是GPT,有什么可以帮你")
    ],
    "subject": "程序员"
})
print(chat_prompt_value)
print(chat_prompt_value.to_string())
